package com.rad.net.protocol.common.cmd;

import java.io.Serializable;

import com.rad.net.protocol.android.http.Request;
import com.rad.net.protocol.common.annotation.Alias;
import com.rad.net.protocol.common.annotation.NotNull;
import com.rad.net.protocol.common.annotation.Transient;
import com.rad.net.protocol.common.result.BaseResult;

/**
 * 类说明： 请求参数基类，所有请求cmd的父类， 此类包含了请求命令需携带的一般信息， 子类继承该类可以根据需求添加相应的属性，
 * <p>
 * <b> 子类继承命名规则应该以Cmd结尾，如自动注册cmd命名方式为 {@link AutoRegisterCmd}
 * ，而一个cmd应该有一个对应的result, 命名规则见 {@link BaseResult} </b>
 * 
 * @author xinhui.cheng
 * @date 2014-8-15
 * @version 1.0
 */
public class BaseCmd implements Serializable {

	private static final long serialVersionUID = 1L;
	/**
	 * 设备ID
	 */

	// @Alias("_did")
	// private String deviceId;
	@Alias("_aid")
	private String android_id;

	/**
	 * 统计程序版本号
	 */
	@Alias("_sv")
	private int statversion = 2;
	/**
	 * 客户端版本号
	 */
	@NotNull
	@Alias("_vc")
	private int versionCode;
	/**
	 * 客户端版本名
	 */
	@NotNull
	@Alias("_vn")
	private String versionName;
	/**
	 * 客户端包名
	 */
	@NotNull
	@Alias("_pn")
	private String packageName;
	/**
	 * 参数校验码
	 */
	@NotNull
	@Alias("_cs")
	private String checkSign;
	/**
	 * 渠道号
	 */
	@NotNull
	@Alias("_cl")
	private String channel;

	/**
	 * 请求的url，不包含参数
	 */
	@Transient
	private String serverUrl;

	// /**
	// * 获取设备ID
	// * @return 设备ID
	// */
	// public String getDeviceId() {
	// return deviceId;
	// }
	//
	// /**
	// * 设置设备ID
	// * @param deviceId 设备ID
	// */
	// public void setDeviceId(String deviceId) {
	// this.deviceId = deviceId;
	// }

	/**
	 * 获取应用版本号
	 * 
	 * @return 版本号
	 */
	public int getVersionCode() {
		return versionCode;
	}

	/**
	 * 设置应用版本号
	 * 
	 * @param versionCode
	 *            版本号
	 */
	public void setVersionCode(int versionCode) {
		this.versionCode = versionCode;
	}

	/**
	 * 获取应用版本名称
	 * 
	 * @return 版本名称
	 */
	public String getVersionName() {
		return versionName;
	}

	/**
	 * 设置应用版本名称
	 * 
	 * @param versionName
	 *            版本名称
	 */
	public void setVersionName(String versionName) {
		this.versionName = versionName;
	}

	/**
	 * 获取包名
	 * 
	 * @return 包名
	 */
	public String getPackageName() {
		return packageName;
	}

	/**
	 * 设置包名
	 * 
	 * @param packageName
	 *            包名
	 */
	public void setPackageName(String packageName) {
		this.packageName = packageName;
	}

	/**
	 * 获取参数效验码
	 * 
	 * @return 参数效验码
	 */
	public String getCheckSign() {
		return checkSign;
	}

	/**
	 * 设置参数效验码
	 * 
	 * @param checkSign
	 *            参数验证码
	 */
	public void setCheckSign(String checkSign) {
		this.checkSign = checkSign;
	}

	/**
	 * 获取渠道号
	 * 
	 * @return 渠道号
	 */
	public String getChannel() {
		return channel;
	}

	/**
	 * 设置渠道号
	 * 
	 * @param channel
	 *            渠道号
	 */
	public void setChannel(String channel) {
		this.channel = channel;
	}

	/**
	 * 获取请求的url,<b>不包含参数，不同于{@link Request#getUrl()}</b>
	 * 
	 * @return url地址
	 */
	public String getServerUrl() {
		return serverUrl;
	}

	/**
	 * 设置请求的url，<b>不包含参数，不同于{@link Request#setUrl()}</b>
	 * 
	 * @param serverUrl
	 *            url地址
	 */
	public void setServerUrl(String serverUrl) {
		this.serverUrl = serverUrl;
	}

	public int getStatversion() {
		return statversion;
	}

	public void setStatversion(int statversion) {
		this.statversion = statversion;
	}

	public String getAndroid_id() {
		return android_id;
	}

	public void setAndroid_id(String android_id) {
		this.android_id = android_id;
	}

}
